package q419_countBattleships;

public class Solution {

    /*
    跟 岛屿的数量 相同的解法 实际上就是沉岛策略 遇到一个X 就进入dfs 将其所有相邻的X标记为. 即为沉岛
    并且++ans
    但是该题说明战舰只能是一行或者一列 所以不需要四个方向搜索 两个方向即可
     */
    public int countBattleships(char[][] board) {
        int ans = 0;
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[0].length; j++) {
                if (board[i][j] == 'X') {
                    dfs(board, i, j);
                    ++ans;
                }
            }
        }

        return ans;
    }

    private void dfs(char[][] board, int i, int j) {
        if (i < 0 || i >= board.length || j < 0 || j >= board[0].length || board[i][j] == '.') {
            return;
        }
        board[i][j] = '.';
        dfs(board, i + 1, j);
        dfs(board, i, j + 1);
    }


}
